unit ListaIngredProdutos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, ImgList, ComCtrls, DBCtrls, StdCtrls, DB, DBTables,
  Grids, DBGrids;

type
  TFormListaIngredProdutos = class(TForm)
    ListView2: TListView;
    ImageList2: TImageList;
    ActTotal: TActionList;
    ActionVoltar: TAction;
    DBGridProdutos: TDBGrid;
    DataSource1: TDataSource;
    QueryIngrediente: TQuery;
    ActionNovo: TAction;
    ActionExcluir: TAction;
    ActionEditar: TAction;
    Label1: TLabel;
    LabelProduto: TLabel;
    QueryIngredienteitem: TStringField;
    QueryIngredienteproduto: TStringField;
    QueryIngredienteid: TIntegerField;
    QueryIngredienteid_produto: TIntegerField;
    QueryIngredienteid_item_estoque: TIntegerField;
    QueryIngredientequantidade: TFloatField;
    QueryIngredientedata: TDateTimeField;
    Label2: TLabel;
    LabelDescricao: TLabel;
    QueryIngredienteunidade: TStringField;
    QueryIngredientequantidade_broto: TFloatField;
    QueryIngredientequantidade_calzone: TFloatField;
    QueryIngredientequantidade_frita: TFloatField;
    procedure ActionVoltarExecute(Sender: TObject);
    procedure ListView2Click(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ActionNovoExecute(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure AtualizaLista;
    procedure DBLookupComboBoxProdutoClick(Sender: TObject);
    procedure QueryIngredientequantidadeGetText(Sender: TField;
      var Text: String; DisplayText: Boolean);
    procedure ActionEditarExecute(Sender: TObject);
    procedure ActionExcluirExecute(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    xIdProduto: integer;
  end;

var
  FormListaIngredProdutos: TFormListaIngredProdutos;
  sql:string;

implementation

uses IUIngredProduto, Principal;

{$R *.dfm}

procedure TFormListaIngredProdutos.ActionVoltarExecute(Sender: TObject);
begin
close;
end;

procedure TFormListaIngredProdutos.ListView2Click(Sender: TObject);
var List: TListView;
begin
if TListView(Sender).Selected <> nil then
  begin
        List := TlistView(Sender);
        ActTotal.Actions[List.Selected.StateIndex].Execute;
  end;

end;

procedure TFormListaIngredProdutos.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

  if key = VK_F1 then ActionNovo.Execute;

  if key = VK_F2 then ActionEditar.Execute;

  if key = VK_F3 then ActionExcluir.Execute;



  if Key = VK_ESCAPE then
     self.close;
end;

procedure TFormListaIngredProdutos.ActionNovoExecute(Sender: TObject);
begin

    if assigned(FormIUIngredProduto) then
       FormIUIngredProduto:= nil;
    FormIUIngredProduto := TFormIUIngredProduto.Create(Self);
    FormIUIngredProduto.xIdProduto := xIdProduto;
    FormIUIngredProduto.ShowModal;

    AtualizaLista;
end;

procedure TFormListaIngredProdutos.ActionEditarExecute(Sender: TObject);
begin
    if assigned(FormIUIngredProduto) then
       FormIUIngredProduto:= nil;
    FormIUIngredProduto := TFormIUIngredProduto.Create(Self);
    FormIUIngredProduto.xIdProduto := xIdProduto;
    FormIUIngredProduto.xId := QueryIngrediente.fieldByName('id').AsInteger;
    FormIUIngredProduto.xIdIngrediente := QueryIngrediente.fieldByName('id_item_estoque').AsInteger;
    FormIUIngredProduto.ShowModal;

    AtualizaLista;
end;


procedure TFormListaIngredProdutos.ActionExcluirExecute(Sender: TObject);
begin

    if MessageDlg('Deseja Excluir o Item ' + QueryIngrediente.fieldByName('item').AsString + ' para o Produto?',
                mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin

        sql := 'delete from produto_item_estoque where id = ' + QueryIngrediente.fieldByName('id').AsString;

        FormPrincipal.QueryAtualiza.SQL.Clear;
        FormPrincipal.QueryAtualiza.SQL.Add(sql);
        FormPrincipal.QueryAtualiza.ExecSQL;

        AtualizaLista;
    end;


end;


procedure TFormListaIngredProdutos.FormActivate(Sender: TObject);
begin
    
    AtualizaLista;
end;

procedure TFormListaIngredProdutos.AtualizaLista;
begin

     QueryIngrediente.ParamByName('p_id_produto').AsInteger := xIdProduto;
     QueryIngrediente.Close;
     QueryIngrediente.Open;

     sql := 'select produto_name('+IntToStr(xIdProduto)+',''NK'') as nome, produto_name('+IntToStr(xIdProduto)+',''DS'') as descricao';
     FormPrincipal.QueryAux.SQL.Clear;
     FormPrincipal.QueryAux.SQL.Add(sql);
     FormPrincipal.QueryAux.Close;
     FormPrincipal.QueryAux.Open;

     LabelProduto.Caption := FormPrincipal.QueryAux.FieldByName('nome').AsString;
     LabelDescricao.Caption := FormPrincipal.QueryAux.FieldByName('descricao').AsString;

end;

procedure TFormListaIngredProdutos.DBLookupComboBoxProdutoClick(
  Sender: TObject);
begin
    AtualizaLista;
end;

procedure TFormListaIngredProdutos.QueryIngredientequantidadeGetText(
  Sender: TField; var Text: String; DisplayText: Boolean);
begin

    if QueryIngrediente.RecordCount = 0 then
       abort;

    try
       StrtoFloat(Trim(QueryIngrediente.fieldByName('quantidade').AsString));
       Text := formatfloat('###,###,##0.000', StrToFloat(QueryIngrediente.fieldByName('quantidade').AsString));
    except
       abort;
    end;


end;




end.
